package com.example.springbootexamples.util;

import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.*;

public class DateUtil1 {


    public static void main(String args[]){
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
        String d1="2022-08-01";
        String d2="2022-08-31";
        try {
            Date df = simpleDateFormat.parse(d1);
            Date dt = simpleDateFormat.parse(d2);
            Calendar calendar = Calendar.getInstance();
            for (long l =df.getTime();l<=dt.getTime();l=l+60*1000*60*24l) {
                Date d=new Date(l);
                calendar.setTime(d);
                int n = calendar.get(Calendar.DAY_OF_WEEK);
                //System.out.println(simpleDateFormat.format(d)+"\t"+n);
                System.out.println(getBeginDayOfWeek(d)+"\t"+getEndDayOfWeek(d));
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        /*List<Date> dates=weekList(new Date());
        System.out.println(dates);*/

        //System.out.println(getBeginDayOfWeek(new Date()));
    }


    public static Date getBeginDayOfWeek(Date date ) {



        Calendar cal = Calendar.getInstance();

        cal.setTime(date);

        int dayofweek = cal.get(Calendar.DAY_OF_WEEK);

        if (dayofweek == 1) {

            dayofweek += 7;

        }

        cal.add(Calendar.DATE, 2 - dayofweek);

        return getDayStartTime(cal.getTime());

    }

    //获取本周的结束时间

    public static Date getEndDayOfWeek(Date date) {

        Calendar cal = Calendar.getInstance();

        cal.setTime(getBeginDayOfWeek(date));

        cal.add(Calendar.DAY_OF_WEEK, 6);

        Date weekEndSta = cal.getTime();

        return getDayEndTime(weekEndSta);

    }



    //获取某个日期的开始时间

    public static Timestamp getDayStartTime(Date d) {

        Calendar calendar = Calendar.getInstance();

        if(null != d) calendar.setTime(d);

        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),    calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);

        calendar.set(Calendar.MILLISECOND, 0);

        return new Timestamp(calendar.getTimeInMillis());

    }

    //获取某个日期的结束时间

    public static Timestamp getDayEndTime(Date d) {

        Calendar calendar = Calendar.getInstance();

        if(null != d) calendar.setTime(d);

        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),    calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59);

        calendar.set(Calendar.MILLISECOND, 999);

        return new Timestamp(calendar.getTimeInMillis());

    }

}
